#!/bin/bash
#####   name:FRPS一键安装脚本   #####
if [[ "$EUID" -ne 0 ]]; then
        echo "此安装程序需要以超级用户权限运行."
        exit
fi

#检查是否已经安装过
is_install() {
    if [ -f "/etc/systemd/system/frps.service" ]
    then
        echo "frps已经安装，无需重复安装！"
        exit
    elif [ -f "/lib/systemd/system/frps.service" ]
    then
        echo "frps已经安装，无需重复安装！"
        exit
    fi
}

#初始化
init() {
    if [ -e "/usr/bin/yum" ]
	then
		yum -y install tar wget
	elif [ -e "/usr/bin/apt-get" ]
    then
		#更新软件，否则可能make命令无法安装
		apt-get update
		apt-get install -y wget
	fi
}


#下载Frps
download() {
    mkdir -p /tmp/frps
    cd /tmp/frps
    wget http://btwise.f3322.net:6080/public/frps/frps
    wget http://btwise.f3322.net:6080/public/frps/frps.ini
    wget http://btwise.f3322.net:6080/public/frps/frps.service
   
}

#自动放行端口
chk_firewall(){
	if [ -e "/etc/firewalld/zones/public.xml" ]
	then
		firewall-cmd --zone=public --add-port=9000/tcp --permanent
		firewall-cmd --reload
	elif [ -e "/etc/ufw/before.rules" ]
	then
		ufw allow 9000/tcp
	fi
}

#安装Zddir
install_frps() {
    #创建文件夹
    mkdir -p /root/frps
    # 复制frps文件
    cp -ar /tmp/frps/* /root/frps
    # 安装frps服务
    cd /root/frps && sudo cp frps.service /etc/systemd/system/
    chmod +x frps 
    systemctl daemon-reload
    #删除临时文件
    rm -rf /tmp/frps
    # 启动服务
    systemctl start frps
    # 获取访问地址
    myip=$(curl -s ip.rss.ink)
    echo "---------------------------------------------"
    echo "frps安装成功："
    echo "请在客户端配置文件里配置相关端口,服务器外网IP为 ${myip},端口为:9000"
    echo "---------------------------------------------"
}

# 卸载Zdir
uninstall_frps() {
    # 停止frps
    systemctl stop frps
    # 删除服务
    rm -rf /etc/systemd/system/frps.service
    # 重载服务
    systemctl daemon-reload
    rm -rf /root/frps
    echo "frps卸载完成!"
}


if [ -z "$1" ]
then
    action="install"
else
    action=$1
fi
# 获取参数
case $1 in
    install) 
        #安装frps
        is_install && init && download && chk_firewall && install_frps
    ;;
    uninstall)
        # 卸载frps
        uninstall_frps
    ;;
    *)
        echo "参数错误!"
        exit
    ;;
esac

